home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / man / lib.fmt / c / setbuf.man < prev    next >
Encoding:
Text File  |  1989-01-06  |  4.8 KB  |  133 lines

  1.  
  2.  
  3.  
  4. SETBUF                C Library Procedures                 SETBUF
  5.  
  6.  
  7.  
  8. NNAAMMEE
  9.      setbuf, setbuffer, setlinebuf, setvbuf - assign buffering to
  10.      a stream
  11.  
  12. SSYYNNOOPPSSIISS
  13.      ##iinncclluuddee <<ssttddiioo..hh>>
  14.  
  15.      sseettbbuuff((ssttrreeaamm,, bbuuff))
  16.      FFIILLEE **ssttrreeaamm;;
  17.      cchhaarr **bbuuff;;
  18.  
  19.      sseettbbuuffffeerr((ssttrreeaamm,, bbuuff,, ssiizzee))
  20.      FFIILLEE **ssttrreeaamm;;
  21.      cchhaarr **bbuuff;;
  22.      iinntt ssiizzee;;
  23.  
  24.      sseettlliinneebbuuff((ssttrreeaamm))
  25.      FFIILLEE **ssttrreeaamm;;
  26.  
  27.      sseettvvbbuuff((ssttrreeaamm,, bbuuff,, mmooddee,, ssiizzee))
  28.      FFIILLEE **ssttrreeaamm;;
  29.      cchhaarr **bbuuff;;
  30.      iinntt mmooddee;;
  31.      iinntt ssiizzee;;
  32.  
  33.  
  34. DDEESSCCRRIIPPTTIIOONN
  35.      The three types of buffering available are unbuffered, block
  36.      buffered, and line buffered.  When an output stream is
  37.      unbuffered, information appears on the destination file or
  38.      terminal as soon as written; when it is block buffered many
  39.      characters are saved up and written as a block; when it is
  40.      line buffered characters are saved up until a newline is
  41.      encountered or input is read from stdin.  _F_f_l_u_s_h (see
  42.      _f_c_l_o_s_e(3S)) may be used to force the block out early.  Nor-
  43.      mally all files are block buffered.  A buffer is obtained
  44.      from _m_a_l_l_o_c(3) upon the first _g_e_t_c or _p_u_t_c(3S) on the file.
  45.      If the standard stream ssttddoouutt refers to a terminal it is
  46.      line buffered.  The standard stream ssttddeerrrr is always unbuf-
  47.      fered.
  48.  
  49.      _S_e_t_b_u_f is used after a stream has been opened but before it
  50.      is read or written.  The character array _b_u_f is used instead
  51.      of an automatically allocated buffer.  If _b_u_f is the con-
  52.      stant pointer NNUULLLL,, input/output will be completely unbuf-
  53.      fered.  A manifest constant BBUUFFSSIIZZ tells how big an array is
  54.      needed:
  55.  
  56.           cchhaarr buf[BUFSIZ];
  57.  
  58.      _S_e_t_b_u_f_f_e_r, an alternate form of _s_e_t_b_u_f, is used after a
  59.      stream has been opened but before it is read or written.
  60.  
  61.  
  62.  
  63. Sprite v1.0             October 16, 1987                        1
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. SETBUF                C Library Procedures                 SETBUF
  71.  
  72.  
  73.  
  74.      The character array _b_u_f whose size is determined by the _s_i_z_e
  75.      argument is used instead of an automatically allocated
  76.      buffer.  If _b_u_f is the constant pointer NNUULLLL, input/output
  77.      will be completely unbuffered.
  78.  
  79.      _S_e_t_l_i_n_e_b_u_f is used to change _s_t_d_o_u_t or _s_t_d_e_r_r from block
  80.      buffered or unbuffered to line buffered.  Unlike _s_e_t_b_u_f and
  81.      _s_e_t_b_u_f_f_e_r it can be used at any time that the file descrip-
  82.      tor is active.
  83.  
  84.      _S_e_t_v_b_u_f is the final form of _s_e_t_b_u_f;  as with _s_e_t_b_u_f, it
  85.      must be invoked after a stream has been opened but before it
  86.      is read or written.  The argument _m_o_d_e determines how _s_t_r_e_a_m
  87.      will be buffered: __IIOOFFBBFF causes input/output to be fully
  88.      buffered, __IIOOLLBBFF causes output to be line buffered, and
  89.      __IIOONNBBFF causes input/output to be unbuffered.  The argument
  90.      _s_i_z_e specifies how large a buffer to use.  If _b_u_f is NNUULLLL ,
  91.      then _s_e_t_v_b_u_f will allocate the buffer space;  otherwise, it
  92.      will use the space at _b_u_f (which must contain at least _s_i_z_e
  93.      bytes).  _S_e_t_v_b_u_f returns zero on success, or nonzero if an
  94.      invalid value is given for _m_o_d_e or if the request cannot be
  95.      honored.
  96.  
  97.      A file can be changed from unbuffered or line buffered to
  98.      block buffered by using _f_r_e_o_p_e_n (see _f_o_p_e_n(3S)).  A file can
  99.      be changed from block buffered or line buffered to unbuf-
  100.      fered by using _f_r_e_o_p_e_n followed by _s_e_t_b_u_f with a buffer
  101.      argument of NNUULLLL.
  102.  
  103. SSEEEE AALLSSOO
  104.      fopen(3S), getc(3S), putc(3S), malloc(3), fclose(3S),
  105.      puts(3S), printf(3S), fread(3S)
  106.  
  107. BBUUGGSS
  108.      The _s_e_t_b_u_f_f_e_r and _s_e_t_l_i_n_e_b_u_f functions are not portable to
  109.      non-4.2BSD versions of UNIX.  On 4.2BSD and 4.3BSD systems,
  110.      _s_e_t_b_u_f always uses a suboptimal buffer size and should be
  111.      avoided.  _S_e_t_b_u_f_f_e_r is not usually needed as the default
  112.      file I/O buffer sizes are optimal.
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129. Sprite v1.0             October 16, 1987                        2
  130.  
  131.  
  132.  
  133.